package com.zzuli.yxy.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zzuli.yxy.entity.Role;
import com.zzuli.yxy.result.R;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @auther pony
 * @create 2023-03-28 15:28
 */
public interface RoleService extends IService<Role> {
    /**
     * 获取全部角色信息
     * @return
     */
    R getAllRole();

    /**
     * 获取角色管理分页信息
     * @param pageCurrent 当前页
     * @param pageSize 每页条数
     * @param name 关键字 非必传
     * @return
     */
    R getPage(Integer pageCurrent, Integer pageSize, String name);

    /**
     * 更改角色当前状态
     * @param status 状态码 0：正常 1：异常
     * @return
     */
    void setStatus(Integer id, Integer status);

    /**
     * 添加员工
     * @param role
     * @return
     */
    R addRole(Role role);

    /**
     * 根据角色 id，删除角色
     * @param id 角色id
     * @return
     */
    R deleteRoleById(Integer id);

    /**
     * 根据角色id，查询单个角色信息
     * @param id
     * @return
     */
    R selectOneById(Integer id);

    /**
     * 修改角色信息
     * @param role
     * @return
     */
    R updateRole(Role role);

    /**
     * 批量删除
     * @param ids 角色 id数组
     * @return
     */
    R deleteRoleBatch(List<Integer> ids);

    /**
     * 角色信息 -- 导出 Excel
     * @param response
     * @return
     */
    void outExcel(HttpServletResponse response);

    /**
     * 角色信息 -- 导入 Excel
     * @param file
     * @return
     */
    void inExcel(MultipartFile file);

    /**
     * 通过角色id，获取此角色的权限 id 数组
     * @param id
     * @return
     */
    R getMenuByRoleId(Integer id);

    /**
     * 为 角色添加权限
     * @param id 待添加的角色id
     * @param menuIds 添加的权限id数组
     * @return
     */
    R addMenuForRole(Integer id, Integer[] menuIds);


}
